package com.hc.kaiser;

/**
 * @author : Henry
 * {@code CreateTime}: 2025-08-23 23:48
 * {@code Version}: 1.0
 */
public class KaiserDemo {
    public static void main(String[] args) {
        // 定义原文
        String input = "Hello World";
        // 把原文右移3位
        int key = 3;
        String s = encrypt(input, key);
        System.out.println("加密后：" + s);
        String s1 = decrypt(s, key);
        System.out.println("解密后：" + s1);
    }

    /**
     * 凯撒解密
     *
     * @param s   密文
     * @param key 密钥
     * @return 原文
     */
    public static String decrypt(String s, int key) {
        // 把字符串变成字节数组
        char[] chars = s.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (char c : chars) {
            int b = c;
            // 往左边移动3位
            b = b - key;
            char newb = (char) b;
            sb.append(newb);
        }
        return sb.toString();
    }

    /**
     * 凯撒加密
     *
     * @param input 原文
     * @param key   密钥
     * @return 密文
     */
    public static String encrypt(String input, int key) {
        // 把字符串变成字节数组
        char[] chars = input.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (char c : chars) {
            int b = c;
            // 往右边移动3位
            b = b + key;
            char newb = (char) b;
            sb.append(newb);
        }
        return sb.toString();
    }
}
